package cn.b.sky.mes.pp.service;

import java.util.List;

import cn.b.sky.common.model.Page;
import cn.b.sky.mes.pp.model.ProductOrder;
import cn.b.sky.mes.pp.model.ProductionOrder;
import cn.b.sky.mes.pp.model.condition.ProductionOrderCondition;

public interface ProductOrderService {

  /**
   * 
   * <strong>Title : getProductOrdersByCondition<br></strong>
   * <strong>Description : </strong>分页查询产品订单<br> 
   * <strong>Create on : 2016-1-18 下午2:28:38<br></strong>
   * <p>
   * @param condition
   * @return
   * Page
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Page getProductOrdersByCondition(ProductionOrderCondition condition);

  /**
   * 
   * <strong>Title : getProductOrderByPk<br></strong>
   * <strong>Description : </strong>查询产订单<br> 
   * <strong>Create on : 2016-1-18 下午2:28:49<br></strong>
   * <p>
   * @param siteCode
   * @param productOrderNum
   * @return
   * ProductOrder
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  ProductOrder getProductOrderByPk(String siteCode, String productOrderNum);

  /**
   * 
   * <strong>Title : selectProductionOrdersByProductOrder<br></strong>
   * <strong>Description : </strong>获取产品订单的生产订单详情<br> 
   * <strong>Create on : 2016-1-18 下午2:29:01<br></strong>
   * <p>
   * @param siteCode
   * @param productOrderNum
   * @return
   * List<ProductionOrderDetail>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<ProductionOrder> selectProductionOrdersByProductOrder(String siteCode, String productOrderNum);

  /**
   * 
   * <strong>Title : saveProductOrder<br></strong>
   * <strong>Description : </strong>新增保存<br> 
   * <strong>Create on : 2016-1-18 下午2:29:18<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void saveProductOrder(ProductOrder order);

  /**
   * 
   * <strong>Title : modifyProductOrder<br></strong>
   * <strong>Description : </strong>修改<br> 
   * <strong>Create on : 2016-1-18 下午2:29:32<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void modifyProductOrder(ProductOrder order);
  
  /**
   * 
   * <strong>Title : modifyNoCreateProductionOrder<br></strong>
   * <strong>Description : </strong>非编辑页面的修改<br> 
   * <strong>Create on : 2016-5-20 上午9:54:31<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void modifyNoCreateProductionOrder(ProductOrder order);

  /**
   * 
   * <strong>Title : deleteProductOrderByPk<br></strong>
   * <strong>Description : </strong>删除订单状态的产品订单<br> 
   * <strong>Create on : 2016-1-18 下午2:29:41<br></strong>
   * <p>
   * @param siteCode
   * @param productOrderNum
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteProductOrderByPk(String siteCode, String productOrderNum);

  /**
   * 
   * <strong>Title : closeSplitProductOrder<br></strong>
   * <strong>Description : </strong>强制关闭产品订单<br> 
   * <strong>Create on : 2016-1-18 下午8:15:47<br></strong>
   * <p>
   * @param productOrderNum
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void closeSplitProductOrder(String productOrderNum, String siteCode);

  /**
   * 
   * <strong>Title : closeProductOrder<br></strong>
   * <strong>Description : </strong>关闭创建状态产品订单<br> 
   * <strong>Create on : 2016-1-19 下午2:44:54<br></strong>
   * <p>
   * @param siteCode
   * @param productOrderNum
   * @param value
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void closeProductOrder(String siteCode, String productOrderNum, String value);

  /**
   * 
   * <strong>Title : splitProductOrder<br></strong>
   * <strong>Description : </strong>分解产品订单<br> 
   * <strong>Create on : 2016-1-20 上午11:29:41<br></strong>
   * <p>
   * @param materialCode
   * @param siteCode
   * @param order
   * @return
   * List<ProductionOrder>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<ProductionOrder> splitProductOrder(String materialCode, String siteCode, ProductOrder order);

  /**
   * 
   * <strong>Title : decompProductionOrders<br></strong>
   * <strong>Description : </strong>分解保存生产订单<br> 
   * <strong>Create on : 2016-1-21 下午3:37:43<br></strong>
   * <p>
   * @param productOrderNum
   * @param productionOrder
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void decompProductionOrders(ProductOrder order, List<ProductionOrder> productionOrder);

}
